{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Private Multiplicative Weights for Histograms"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "using PrivateMultiplicativeWeights\n",
    "using Distributions\n",
    "using PyPlot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Example: Approximating a mixture of two Gaussians."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We start from a continuous mixture of two Gaussians."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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BTaprV5tNwcAAGUVko1YOTk5qlmCyzh+v199+/ZV1apVlZCQoEsuuUQbNmwIRQR4zL590tatlNZTad5cioujtAIAol9QywOOZ8qUKdq2bZseffTRkz4uISFBQ4cO1VlnnaWqVasqIyNDzz77rHr16qUlS5aoXr16ZY0CD1m71txSWk8uLk5q0YLSCgCIfmUqrWvXrtXw4cPVq1cvXXfddSd97KBBgzRo0KAj/3/gwIE6//zz1bt3bz322GOaOHFiWaLAYwID81u1spsjGiQnU1oBANGv1MsDcnJydOGFF6p69eqaNm2afD5f0B+jV69e6tatm+bOnVvaGPCozEypYUOpcmXbSZyP0goAcINSXWndu3evLrjgAu3du1fz589XnTp1Sh2gfv36WrduXYkeO3LkSCUmJh51X2pqqlJTU0v9+ohObMIquTZtzPSAnTul2rVtpwEAuEF6errS09OPui8vLy+srxl0aS0sLNRFF12kDRs26OOPP1bLMk5237Rpk2rVqlWix44fP55xWZBkSutll9lOER0CEwQyMymtAIDQON5FwyVLlqhTp05he82glgcUFxdr8ODBWrRokaZPn66uXbse93HZ2dnKyspSUVHRkftyc3OPedz777+vjIwM9e/fP8jY8LL8fGnzZq60llSzZkwQAABEv6CutN5+++2aNWuWBg4cqNzcXE2dOvWo/3711VdLkkaPHq20tDRt2bJFDRo0kCT17NlTHTp0UOfOnZWYmKiMjAxNmjRJDRs21D333BOiTwdekJUl+f2U1pKKizNH3VJaAQDRLKjSunz5cvl8Ps2aNUuzZs065r8HSqvP51NMzNEXcYcMGaLZs2fro48+Un5+vpKSkjRs2DA9+OCDJV4eAEi/TA5o3dpujmjCZiwAQLQLqrR++umnJXrcpEmTNGnSpKPuGzNmjMaMGRPMywHHlZkp1asn/WZPHk4iOVmaO9dcoS7FoA8AAKwLyYlYQCQxOSB4ycnS7t1mggAAANGI0oqoQ2kNXmCCAEsEAADRitKKqFJYKG3YQGkNVtOmUvnylFYAQPSitCKqrFsnFRdTWoNVrpyZIBDYxAYAQLShtCKqMDmg9JggAACIZpRWRJXMTOn006UaNWwniT6B0ur3204CAEDwKK2IKmzCKr3kZOmHH6ScHNtJAAAIHqUVUYXSWnpMEAAARDNKK6LGoUNmIxaltXSaNJEqVKC0AgCiE6UVUWPjRunwYUpraQUmCFBaAQDRiNKKqBGYHEBpLT0mCAAAohWlFVEjM9NMDahVy3aS6MUEAQBAtKK0ImoENmH5fLaTRK/kZGnPHik723YSAACCQ2lF1GByQNkxQQAAEK0orYgKRUXS2rWU1rJq0kSqWJHSCgCIPpRWRIXNm6XCQkprWcXGSq1aUVoBANGH0oqowOSA0GnThtIKAIg+lFZEhcxMqWpVKSnJdpLoxwQBAEA0orQiKjA5IHSSk6W8PGn7dttJAAAoOUorogKTA0KHCQIAgGhEaYXjFRdLa9ZQWkOlcWMzQSCwThgAgGhAaYXjbd0q5edTWkMlNlZq3ZorrQCA6EJpheMxOSD0ApuxAACIFpRWOF5mplSpklS/vu0k7hEYe8UEAQBAtKC0wvEyM83b2TH8aQ2Z5GRp715p2zbbSQAAKBlqAByPyQGhxwQBAEC0obTC0fx+Sms4NGokxcczQQAAED0orXC0bdukffsoraEWGyu1asWVVgBA9KC0wtGYHBA+yclcaQUARA9KKxwtM9MMwm/UyHYS92nTxvz+MkEAABANKK1wtMxM8zZ2bKztJO6TnCzl5Unbt9tOAgDAqVFa4WhswgqfwO8rSwQAANGA0grHYnJAeDVubJZeUFoBANGA0grHysmRfvyR0houTBAAAEQTSisci8kB4RfYjAUAgNNRWuFYmZlSXJzUtKntJO7Vpo250soEAQCA01Fa4ViZmVLLllK5craTuFdysrRnj5SdbTsJAAAnR2mFY7EJK/yYIAAAiBaUVjgWpTX8mjSRKlRgMxYAwPkorXCkXbvML0preJUrZ5ZgcKUVAOB0lFY40po15pbSGn5MEAAARANKKxxpzRozR7R5c9tJ3C85mQkCAADno7TCkTIzTWEtX952Evdr00b64Qdp507bSQAAODFKKxyJTViRE/h9ZjMWAMDJKK1wJEpr5DRrZg5xYF0rAMDJKK1wnD17pO3bKa2RwgQBAEA0oLTCcZgcEHmBzVgAADgVpRWOk5kpxcRILVrYTuIdjL0CADgdpRWOk5lpTmqKj7edxDvatJFyc82BDgAAOBGlFY7DJqzIS042tywRAAA4FaUVjkNpjbxmzcyGLJYIAACcitIKR9m3T9q6ldIaaXFxZg0xV1oBAE5FaYWjrF1rblu3tpvDi5KTudIKAHAuSiscJVCaWrWym8OLmCAAAHAySiscJTNTathQqlzZdhLvSU6Wdu40UwQAAHCaoErr4sWLNXz4cLVt21aVK1dWw4YNddVVV2n9+vUlen5eXp5uvvlm1a5dW5UrV9bZZ5+tpUuXlio43IlNWPYEft+52goAcKKgSutTTz2lmTNn6txzz9WLL76oYcOG6fPPP1fHjh2VeYrvdH6/XwMGDNCbb76pESNGaNy4cdq1a5f69u2rjRs3lumTgHtQWu1p3pwJAgAA5yoXzIPvuOMOpaenq1y5X542ePBgtWvXTk8++aTS0tJO+Nxp06bpq6++0owZM3TZZZdJkgYNGqQWLVrooYce0pQpU0r5KcAt8vOlzZsprbaUL2+KKxMEAABOFNSV1u7dux9VWCWpWbNmSk5O1prAgfEnMGPGDNWpU+dIYZWkmjVravDgwXrnnXd06NChYKLAhbKyJL+f0moTm7EAAE4Vko1YOTk5qlmz5kkfs3TpUnXs2PGY+7t27ar8/HytW7cuFFEQxQJliXFX9rRpw5VWAIAzlbm0TpkyRdu2bdOQIUNO+rgdO3YoKSnpmPsD923fvr2sURDlMjOlevWkxETbSbwrOVnKyZF277adBACAo5WptK5du1bDhw9Xr169dN111530sQUFBapQocIx91esWFF+v18FBQVliQIXYBOWfYHf/1Os9gEAIOKC2oj1azk5ObrwwgtVvXp1TZs2TT6f76SPj4+PV2Fh4TH3HzhwQD6fT/Hx8ad8zZEjRyrxN5fhUlNTlZqaGlx4OFJmptS/v+0U3taihRQba5YI/P73ttMAAJwqPT1d6enpR92Xl5cX1tcsVWndu3evLrjgAu3du1fz589XnTp1TvmcpKQk7dix45j7A/fVrVv3lB9j/Pjxx10Xi+hXWCht2MCVVtsqVJCaNWMzFgDg5I530XDJkiXq1KlT2F4z6OUBhYWFuuiii7RhwwbNnj1bLVu2LNHzUlJStGTJkmPuX7hwoRISEtSiRYtgo8BF1q2TiosprU7ABAEAgBMFVVqLi4s1ePBgLVq0SNOnT1fXrl2P+7js7GxlZWWpqKjoyH1XXnmlcnJy9Pbbbx+5Lzc3V9OnT9fAgQMVFxdXyk8BbsDkAOdITmaCAADAeYJaHnD77bdr1qxZGjhwoHJzczV16tSj/vvVV18tSRo9erTS0tK0ZcsWNWjQQJIprc8//7yGDh2q1atXq2bNmpo4caKKi4v18MMPh+azQdTKzJROP12qUcN2ErRpI+3YIf34o1S9uu00AAAYQZXW5cuXy+fzadasWZo1a9Yx/z1QWn0+n2Jijr6IGxMTozlz5uiuu+7ShAkTVFBQoK5duyotLU3Nmzcvw6cAN2BygHMEvg6ZmVKvXnazAAAQENTygE8//VRFRUUn/BUwadLLUYzBAAAgAElEQVQkHT58+MhV1oDExES9+uqr2rlzp/bt26ePP/5YHTp0CM1ngqhGaXWOli2lmBjWtQIAnCUkJ2IBZXHokNmIRWl1hooVpaZNKa0AAGehtMK6DRukw4cprU7CZiwAgNNQWmFd4IoepdU5GHsFAHAaSiusy8w0UwNq1bKdBAFt2kjbtklhPtwEAIASo7TCujVrTEk6xUnAiKDkZHPL1VYAgFNQWmEdkwOcp2VL80MEpRUA4BSUVlhVVCStXUtpdZr4eKlJEzZjAQCcg9IKqzZvlgoLKa1OlJzMlVYAgHNQWmEVkwOciwkCAAAnobTCqsxMKTFRSkqynQS/lZwsffedtHev7SQAAFBaYVlgExaTA5wncPV7zRq7OQAAkCitsIzJAc7VqhUTBAAAzkFphTXFxb/MaIXzJCRIjRszQQAA4AyUVlizdauUn09pdTI2YwEAnILSCmuYHOB8bdpwpRUA4AyUVlizerVUqZJUv77tJDiR5GRzRXzfPttJAABeR2mFNatXMznA6QJXwdeutZsDAABKK6zJzDRX8uBcrVubW5YIAABso7TCiuJiSms0qFRJatSIzVgAAPsorbBi61bpp58ordGAzVgAACegtMKKQAlicoDztW1LaQUA2EdphRWrV0uVK0sNGthOglNp21b69ltp717bSQAAXkZphRVMDogebduaW9a1AgBsorTCitWrWc8aLVq1kmJipFWrbCcBAHgZpRURV1wsrVlDaY0W8fFSs2aUVgCAXZRWRNy330r5+ZTWaNK2LaUVAGAXpRURF9iJTmmNHpRWAIBtlFZE3OrVUpUq0u9+ZzsJSqptWyknR9q1y3YSAIBXUVoRcUwOiD6BCQLMawUA2EJpRcQxOSD6NGsmlS/PEgEAgD2UVkQUkwOiU1ycGX1FaQUA2EJpRURt3iwVFFBaoxGbsQAANlFaEVFMDohe7dqZ0ur3204CAPAiSisiavVqqWpVqV4920kQrLZtpbw8ads220kAAF5EaUVEZWaaq6xMDog+gQkCLBEAANhAaUVEBcZdIfo0aCBVrkxpBQDYQWlFxBQVMTkgmsXEmK8dpRUAYAOlFRGzebN04AClNZoxQQAAYAulFRHD5IDo17atWZdcVGQ7CQDAayitiJjVq6XERKluXdtJUFpt25o5u5s3204CAPAaSisiJnB8K5MDohcTBAAAtlBaETGB0orodfrpUo0alFYAQORRWhERRUXS2rWU1mjn87EZCwBgB6UVEbFpk1RYyIxWN2jbVlq50nYKAIDXUFoREUwOcI927aSsLPNDCAAAkUJpRUSsXi1VqyYlJdlOgrJq3/6XgyIAAIgUSisigskB7hGYILBihd0cAABvobQiIpgc4B5VqkhNmlBaAQCRRWlF2B0+zOQAt2nfntIKAIgsSivCbuNG6eBBSqubUFoBAJFGaUXYMTnAfdq3l3JyzC8AACKB0oqwy8yUqlc3pynBHdq3N7fMawUARAqlFWHH5AD3adJESkhgiQAAIHIorQi7lSvNQHq4R2ysGX1FaQUARErQpfWnn37SQw89pP79+6tGjRqKiYlRWlpaiZ47efJkxcTEHPMrNjZWO3fuDDo8nO/gQXN6EqXVfdiMBQCIpHLBPiE3N1djx45Vw4YNlZKSonnz5gX1fJ/Pp7Fjx6pRo0ZH3V+tWrVgoyAKrF1rRl5RWt2nfXspLc18fcsF/S8JAADBCfpbTd26dZWdna3atWsrIyNDXbp0CfpFL7jgAnXs2DHo5yH6BDbqBE5Rgnu0b2+upK9bJ7VpYzsNAMDtgl4eEBcXp9q1a5f5hffv36/i4uIyfxw428qVUv36EhfS3Sdw9Xz5crs5AADeEPGNWH6/X3379lXVqlWVkJCgSy65RBs2bIh0DEQIm7Dc67TTpN/9jnWtAIDIiOhKtISEBA0dOlRnnXWWqlatqoyMDD377LPq1auXlixZonr16kUyDiJg5UrpD3+wnQLhwmYsAECkRLS0Dho0SIMGDTry/wcOHKjzzz9fvXv31mOPPaaJEydGMg7CbM8e6bvvuNLqZu3bS1Om2E4BAPAC63Nae/XqpW7dumnu3Lm2oyDEVq0yt5RW92rfXvr+e+mHH2wnAQC4nSMG1dSvX1/r1q075eNGjhypxMTEo+5LTU1VampquKKhDFasMKOQWrWynQTh8uvjXPv0sZsFABA56enpSk9PP+q+vLy8sL6mI0rrpk2bVKtWrVM+bvz48YzKiiIrV0otW0rly9tOgnBp0cJ8fVesoLQCgJcc76LhkiVL1KlTp7C9ZtiWB2RnZysrK0tFRUVH7svNzT3mce+//74yMjLUv3//cEWBJUwOcL+4ODOjlc1YAIBwK9WV1pdeekl79uzRtm3bJEnvvvuuvvvuO0nSiBEjVKVKFY0ePVppaWnasmWLGjRoIEnq2bOnOnTooM6dOysxMVEZGRmaNGmSGjZsqHvuuSdEnxKcwO83a1oHDLCdBOHGBAEAQCSUqrQ+88wz2rp1qyRzLOvMmTM1c+ZMSdK1116rKlWqyOfzKSbm6Au5Q4YM0ezZs/XRRx8pPz9fSUlJGjZsmB588MESLQ9A9PjuOykvjyutXtC+vTR9ulRUJMXG2k4DAHCrUpXWzZs3n/IxkyZN0qRJk466b8yYMRozZkxpXhJRJnB8K6XV/VJSpPx8af16Nt0BAMLH+sgruNPKlVKVKlLDhraTINxSUsztsmV2cwAA3I3SirAIbMLy+WwnQbjVqCHVry8tXWo7CQDAzSitCAsmB3hLhw6UVgBAeFFaEXKHDklr11JavSRQWv1+20kAAG5FaUXIZWWZ4kpp9Y6UFCk3V9q+3XYSAIBbUVoRckwO8J4OHcwtSwQAAOFCaUXIrVwp1asnVa9uOwkipUED8/WmtAIAwqVUc1qBk2ETlvf4fGzGgrPs3y8tWmRGsa1dK+XkSHv2mAMwKlaUfvc7qXFjqVMnqVs3qVo124kBnAqlFSG3YoV01VW2UyDSUlKkt9+2nQJetm+f9Oab0rRp0mefSQcPSgkJUuvWUp06Zm50cbE5DGPpUnOS25495oeuM8+ULr9cuvpqqWZN258JgOOhtCKkfvxR2rr1l4Hz8I4OHaTnnjMlgKtWiKTvvpOeekp64w2poEA6+2xp3DjpvPOkFi1OfLyw3y+tWyd9/rn03/9Kd90ljRol/eEP5n+3bh3RTwPAKbCmFSG1fLm5pbR6T2AzFidjIVJ++EG67TapaVNzhfXOO6UtW6SPPpJGjDCl80SFVTJXWFu2lG66SZo920y/ePhh8/y2baWhQ6Xvv4/UZwPgVCitCKnly6UKFczVDXhLy5ZmrSDrWhFufr80aZL5Mzd5sjRmjLR5symc9euX/uPWrCmNHi1t2CA9/7z0/vum+L7wglRUFLL4AEqJ0oqQWrbMbMIqx8ITzylXTmrfntKK8NqxQ7r4YunGG6X+/c3b+6NHS1WqhO41KlQwV3CzsqTrrpNGjjRrXjdvDt1rAAgepRUhtWyZdMYZtlPAlpQUlgcgfD7+2PxgtHixNGuWlJZmNliFS7Vq0ksvSfPnm7KckiK99Vb4Xg/AyVFaETIHD0qZmaxn9bIOHcyfgQMHbCeBm/j90tNPS+efb/59WblSuuiiyL1+z57mh7H+/c1klHvvZbkAYAOlFSGzdq0prlxp9a4OHcw381WrbCeBWxw6JN18s9nVP2qU9MEHUq1akc+RmCilp5upBE89ZcZj5edHPgfgZZRWhExgckD79nZzwJ527aSYGNa1IjR++kkaONCMsnrjDenxx08+DSDcfD4zoWDWLGnuXDNS64cf7OUBvIbSipBZtsycMJOYaDsJbElIMDu6WdeKstq717wd/8UX0pw50vXX2070iwEDpE8/NZvAeveWdu60nQjwBkorQmb5ctazguNcUXZ5eeYq5ooVZmbquefaTnSsrl1Nof7hB+mss8wxsQDCi9KKkPD7mRwAo0MH8wMMG1VQGj/9JF14obmK+fHHUo8ethOdWKtW0rx55hS4s8+WcnNtJwLcjdKKkNi2Tdq9myutMKU1P9+UDiAYhYXSpZeaH3o++EDq1Ml2olNr0UL65BNp1y6zbGDfPtuJAPeitCIkOL4VAR07mtvFi+3mQHQpLjaD/OfPl957T+rWzXaikmvZUvrwQ3MYwaWXmikqAEKP0oqQWLbMDOJu0MB2EthWvbrUrBmlFcG56y5p2jTp3/+W+vSxnSZ4HTqYqQJffCENH26WTAEILUorQmL5crOe1eeznQRO0KWL9M03tlMgWvz979Jzz0kvvihddpntNKXXu7f06qvSa69Jzz9vOw3gPpRWhASbsPBrnTubCQKHD9tOAqdbsEC67Tbp1lvNFcpod8MN0t13m3mus2fbTgO4C6UVZbZ/v7RhA+tZ8YsuXcxRrpmZtpPAybZtk664wkwIGD/edprQefxxc8xsaiqnwwGhRGlFma1cadZvcaUVAR06mJOxWCKAEzlwwByFGhdn1rLGxdlOFDqxsdLUqVKTJtLFF3NqFhAqlFaU2bJlUrlyUps2tpPAKSpXllq3ZjMWjs/vN8sBli+XZs6Uate2nSj0KleW3nnHnOw1dCgbs4BQoLSizJYvN0O2K1a0nQRO0rkzV1pxfK+9Jv3zn2bTUufOttOET8OG0htvSO++K73wgu00QPSjtKLMli1jPSuO1aWLOYazsNB2EjhJZqb0179Kw4aZuaxud/HF0u23m81Z/BAHlA2lFWVSVGTWtLKeFb/VubN06JAproBk1rGmpkqNG5sRV17xxBNmnffgwebIVwClQ2lFmWRlmSM7A6cgAQFnnGHWOrOuFQGjRpl/M9LTpYQE22kip3x56c03pR9/lP74R9a3AqVFaUWZZGSYW0orfqtiRaldO94ShTF7tjk8YNw4qX1722kir3FjadIk6e23pddft50GiE6UVpRJRobUtKk5whX4rc6dudIKaccOM3T/oovccYBAaV12mXTjjdLIkdKWLbbTANGH0ooyyciQOnWynQJO1aWLtHq19NNPtpPAFr9fuukms1Tkn//kqOfx46XTTjPltbjYdhogulBaUWpFReaoTkorTqRzZ/ONedky20lgy7/+ZZYGvPqqVKuW7TT2Va1qyvunn0ovvWQ7DRBdKK0otfXrzRU0SitOpG1bqUIF1rV61fbt0l/+Il17rRn9BOOcc8wyiVGjzL+jAEqG0opSC2zC6tDBbg44V1ycmeHLulbv8fulW24xG/Kef952Gud58kmpXj3p+uvNu1YATo3SilLLyDA7Yk87zXYSOFmXLlxp9aJ//1uaNUt65RX+jTieSpWkyZOlhQsp9UBJUVpRamzCQkl07iytWyfl5dlOgkjJzpZuu80cJHDJJbbTOFfPnub36cEHmSYAlASlFaVSXMwmLJRMly7mliUC3jF8uFka8uKLtpM436OPmivRf/4zhw4Ap0JpRals2CDt20dpxam1amV2TC9caDsJIuG996QZM0xhrVnTdhrnq1LFTBGYM0d66y3baQBno7SiVDgJCyUVEyN16yZ99ZXtJAi3n36Sbr1V6tdPGjzYdproMXCgdPnlZtLCjz/aTgM4F6UVpZKRITVsKNWoYTsJokHPnuZKK29/utsjj0g7d5orh14/RCBYL74oFRSYMVgAjo/SilJhExaC0aOHtHs3MyndbMUK6bnnpPvvN0c7Izj16klPPCG99pr0xRe20wDORGlF0IqLpSVLKK0ouW7dzO2XX9rNgfAoLpaGDZNatJDuust2muh1yy3m78qtt0qHD9tOAzgPpRVB27RJ2ruX0oqSq1ZNSk5mXatb/eMfZvnHK69I5cvbThO9YmLM0opVq6SJE22nAZyH0oqgsQkLpdGjB6XVjXbvlkaPlm64Qerd23aa6Nepk3TzzdIDD0g5ObbTAM5CaUXQMjKk+vWlWrVsJ0E06dHDXEHikAF3eeABcwzpU0/ZTuIejz0mlStnfhgA8AtKK4LGelaURs+eZnrA11/bToJQWb5c+vvfpYcflmrXtp3GPWrUkB5/XHrjDd6dAH6N0oqg+P2UVpROixZS9ep8E3YLv18aMcJ8XYcPt53Gff70J/Pv7K23mivZACitCNKmTWb4NaUVwYqJkbp3p7S6xbRp0uefSy+8YI5sRWjFxkp/+5s5LvvVV22nAZyB0oqgLFpkbgPnyQPBCGzGKi62nQRlkZ8v3XmnOcnp/PNtp3Gv7t3NBrcHHpD27LGdBrCP0oqgLFpkBodzpjhKo2dPsxFr7VrbSVAWTz1ldrY/95ztJO732GPSgQPmFvA6SiuC8vXXvwyKB4LVtatZJsASgej17bfS009Ld9zByVeRULeuOdr1hRekjRttpwHsCrq0/vTTT3rooYfUv39/1ahRQzExMUpLSyvx8/Py8nTzzTerdu3aqly5ss4++2wtXbo02Biw4OBBs76K0orSqlJFatuW0hrN7rxTOu006d57bSfxjjvukE4/Xbr7bttJALuCLq25ubkaO3as1q5dq5SUFPl8vhI/1+/3a8CAAXrzzTc1YsQIjRs3Trt27VLfvn21kR8hHW/5cqmwkNKKsunZk+Nco9Wnn0rTp5vlAZUr207jHQkJ0hNPSG+/bTa/AV4VdGmtW7eusrOztXnzZj399NPy+/0lfu60adP01VdfafLkybr//vv1f//3f/r0008VGxurhx56KNgoiLBFi8wRjSkptpMgmvXoIa1ZY6ZQIHocPiz95S/m63f11bbTeM8f/mA2wN5+OxsZ4V1Bl9a4uDjVLuUU6RkzZqhOnTq67LLLjtxXs2ZNDR48WO+8844OHTpUqo+LyFi0yBTWChVsJ0E069HD3AYmUSA6TJokrVwpvfiiFMQbbAiRmBiz8S0jQ5oyxXYawI6IbsRaunSpOh7nwPquXbsqPz9f69ati2QcBGnRIrORBiiLZs3MEcBffGE7CUpq/34zdumaa6TOnW2n8a7f/14aNEi65x7pp59spwEiL6KldceOHUpKSjrm/sB927dvj2QcBOGHH6T161nPirLz+aQ+faTPPrOdBCU1bpyZE8rYJfuefFLKzZWeecZ2EiDyIlpaCwoKVOE47y1XrFhRfr9fBQUFkYyDIATOi6e0IhT69DF/pvLzbSfBqWzbZkrryJFSgwa206BJE+mvfzVjx7Zts50GiKxykXyx+Ph4FRYWHnP/gQMH5PP5FB8ff9Lnjxw5UomJiUfdl5qaqtTU1JDmxLG+/tqMuWnWzHYSuEHfvtKhQ2b01Tnn2E6Dk3ngAalSJWn0aNtJEHDvvWaN8b33SpMn204Dr0pPT1d6evpR9+Xl5YX1NSNaWpOSkrRjx45j7g/cV7du3ZM+f/z48cddE4vwC6xnZQMGQqFNG6lGDbNEgNLqXMuXS2+8IU2YIP3megEsSkyUHnlEuvVWM03gjDNsJ4IXHe+i4ZIlS9SpU6ewvWZElwekpKRoyZIlx9y/cOFCJSQkqEWLFpGMgxLy+01pZWkAQiUmRurdW5o3z3YSnIjfbw4SaN5cuvlm22nwW3/6k/nacAUcXhK20pqdna2srCwVFRUdue/KK69UTk6O3n777SP35ebmavr06Ro4cKDi4uLCFQdlsGmTtHs3pRWh1bev+WGIpezO9OGH0ty5Zu0k/zQ7T1yc9Pjj0gcfSJ98YjsNEBmlWh7w0ksvac+ePdr28yrwd999V999950kacSIEapSpYpGjx6ttLQ0bdmyRQ1+Xr1/5ZVX6vnnn9fQoUO1evVq1axZUxMnTlRxcbEefvjh0HxGCLnAPE3GXSGU+vQxRwMvWmQKLJzj8GFzlbV3b2ngQNtpcCKXX24uJtx9t9l3EBPR906ByCtVaX3mmWe0detWSZLP59PMmTM1c+ZMSdK1116rKlWqyOfzKeY3f4NiYmI0Z84c3XXXXZowYYIKCgrUtWtXpaWlqXnz5mX8VBAuixZJTZuaNYhAqLRrJ1WvbpYIUFqd5Y03pNWrTRFiHbtz+XzmSnifPtK0adJVV9lOBISXzx/MOayWBBb2ZmRksBHLgu7dTWmdOtV2ErjNpZdKeXnmTHs4w/79Zq3k2Wfzdz5aXHyxORo5M9MctQ3YEu6+xpsJOKmDB6WlS1nPivDo29eMvTpwwHYSBDzzjPTjjxwkEE2eeELavFl69VXbSYDworTipJYvN8WV0opw6NNHKiz85fAK2LV9uzlI4C9/kRo1sp0GJdW2rXT99dKYMdK+fbbTAOFDacVJLVggVawopaTYTgI3at9eqlaN0VdO8eCDUny8Odse0eWRR0xh5XhXuBmlFSc1f76ZGnCc03eBMouNlc480xwyALtWrpT++U9TXKtVs50GwapfXxoxQnr2WSk723YaIDworTghv9+U1t//3nYSuFmfPtKXX5plArDn7rvNhstbbrGdBKU1erTZiDVmjO0kQHhQWnFCGzdKOTmUVoRX375mI9Y339hO4l1z55oh9U88we7zaFa9unTvvWZD1rp1ttMAoUdpxQnNn2/mAPboYTsJ3CwlRapalbFXthQXm6us3btLV1xhOw3KavhwqW5d6b77bCcBQo/SihOaP98MgGd9G8IpNtYsEfj4Y9tJvOnf/zZj7Z55hoME3KBiRWnsWGn69F9OMwTcgtKKE2I9KyLlvPPMutb9+20n8ZYDB8wVucsuk3r1sp0GoXLNNeaCw6hRZm8C4BaUVhzXrl1SVhalFZFx3nnSoUPS55/bTuItEyZI27aZtaxwj9hY6cknzVSO99+3nQYIHUorjmvBAnNLaUUktGxpRvZ89JHtJN6xe7c59ermm83vP9ylf3+z7Oaee6SiIttpgNCgtOK45s83JaJ+fdtJ4AU+n7na+r//2U7iHY89ZsrMQw/ZToJw8PnM1daVK826ZcANKK04LtazItLOO0/KzDRvVyO8Nm+W/vY3MzXg9NNtp0G4dO8uXX659MADzEGGO1BacYz8fCkjg9KKyDr3XHN1aO5c20nc7777pJo1pdtvt50E4fb449L330svv2w7CVB2lFYc4+uvpcOHKa2IrJo1pQ4dpA8/tJ3E3RYvltLTzalJlSrZToNwa9lSuvFG6dFHpbw822mAsqG04hjz50uJiVJysu0k8Jr+/c26VjaOhIffL915p9SmjXTDDbbTIFIeesi8g/bMM7aTAGVDacUx5s+XevY0Y1OASBowwOxq50jX8Jg924xBevppqVw522kQKfXqSX/5i/Tcc9KOHbbTAKVHacVRiorMkHeWBsCGbt3M+enMlgy9w4fNsPm+fc0PB/CWUaOkChXMaVlAtKK04igrV0r79lFaYUdsrNSvH6U1HN54w0xnGDeO41q9qFo16d57pVdfldats50GKB1KK47yxRdSXJzUpYvtJPCqAQPM9IrsbNtJ3OOnn6QHH5RSU6XOnW2ngS3Dh0t160r33287CVA6lFYc5ZNPpB49pPh420ngVf36mSuBH3xgO4l7PPfcLydgwbsqVpQeeUSaNo1144hOlFYcUVQkzZsnnX227STwstq1zZV+lgiERk6O2Xg1fLjUuLHtNLDtuuvMZJjRo800CSCaUFpxxNKl0p490jnn2E4Cr7voInOllVN8yu7hh82kgPvus50EThAbaw4c+OQT6aOPbKcBgkNpxRGffCIlJEhdu9pOAq+75BKzIXDePNtJotuqVWbjzf33S6edZjsNnOLii6VevcxEgeJi22mAkqO04ohPPpHOPFMqX952Enhdu3ZSo0bSO+/YThK9/H7pjjvMkoDhw22ngZP4fNJTT0nLlkn/+Y/tNEDJUVohSTp40EwOYD0rnMDnM1db332XdXelNWeOOV3smWfMfE7g13r1kgYONFfhDx60nQYoGUorJElff22O+WM9K5zikkukbdvM+CsE59Ahc5W1b1/z+wgcz+OPS1u2mCUkQDSgtEKS9PHHZvh0SortJIBx5pnmdCyWCATvlVekrCxp/HgOEsCJJSdL118vjRlj1pADTkdphSSznrVvX7OzFHCCcuXMFIGZM20niS4//GAmBtx4Iz+E4tQeeUTau9fM8gWcjtIK5edLX33FelY4zxVXSKtXS2vX2k4SPcaMMWsUH33UdhJEg/r1pdtuM2ufd+60nQY4OUortGCBWQPHelY4Tb9+UpUq5gQfnFpWlvTSS+aM+Tp1bKdBtLjnHvMuGz/owOkordDHH0unny61bm07CXC0ihXNTElKa8ncdZdUr540cqTtJIgmp51mTsh65RVp40bbaYATo7RCn3xilgawYQNONGiQtHIlSwROZe5cadYsc2RrxYq20yDajBgh1arFyWlwNkqrx+3ZY0YKsTQATtWvn1S5MldbT+bwYen2283szUGDbKdBNEpIkMaONYcNLFpkOw1wfJRWj/v8c3OMH5uw4FTx8WYI+ltv2U7iXC+/bI5sff553jFB6V1/vdS+vZnxy6EecCJKq8fNnWuOy2zc2HYS4MSGDDGlbMUK20mcJydHeuAB6aabpM6dbadBNIuNNVMEFixg1BycidLqcR9+aN5+BZysXz+pRg1p6lTbSZwnsPP78cdtJ4EbnHeedMEF0qhRHO8K56G0etimTdK6deYfKMDJypeXrrrKlNbiYttpnOOrr6RJk6THHjOlHgiFcePM94eXX7adBDgapdXDPvzQnDrEelZEg2uukbZtkz77zHYSZygqkoYPlzp2NEsDgFBp21b64x/NQRU//mg7DfALSquHffCB2W1ctartJMCpde8uNWkiTZliO4kzvPaatGSJ9Le/cfwyQm/MGKmw0FzFB5yC0upRBw+aQwVYGoBo4fOZq63Tpkk//WQ7jV27dpl5mkOHSj162E4DN6pTx6xrnTDBLBUAnIDS6lELFphv/JRWRJMbbpD27ZOmT7edxK7ASKInn7SdBG52xx1SzZpmsx/gBJRWj/rgA/OT9ISk3d4AACAASURBVBln2E4ClFzjxtK550r/+IftJPbMnSv9619mNFHt2rbTwM0SEszygLfeMpv+ANsorR41e7YZI8QgckSbP/1Jmj/fm8e6FhRIt9wi9eljlgYA4Xbttebixu23c+AA7KO0etDmzdLq1dLFF9tOAgTv0kvNeCcvXm199FHpu++kv/+dHzgRGbGx0vjx0sKFzEmGfZRWD5o9W4qLM0OkgWhToYJ03XXS5Mlmd7NXrFolPf20dO+9UsuWttPAS846S7rySrMxa/9+22ngZZRWD3rvPfP2IqOuEK1uvlnKzTVr7byguFgaNkxq1kwaPdp2GnjRM89IP/zAyWuwi9LqMfv2SZ9+Kl10ke0kQOm1aiWdf770wgveWGf30kvSl19Kr7xirjQDkdawoXT33dKzz0obN9pOA6+itHrM3LlmRiulFdFuxAgpI8OstXOz9evN27K33mreIQFsGTVKOv10sykLsIHS6jHvvSe1bi01bWo7CVA2/fubP8cTJthOEj5FRWZKQN260lNP2U4Dr0tIkMaNk959V/rf/2yngRdRWj2kqEiaNYupAXCHmBhp+HBzQtb339tOEx7PP2+WBUyaJFWqZDsNIA0eLPXuLf31r9KhQ7bTwGsorR6yYIE5/vGyy2wnAULjj3+UKleWnnvOdpLQW7PGHNX6179KZ55pOw1g+HzSiy9KWVlmrTUQSZRWD5k5U0pKkrp2tZ0ECI0qVczV1ldflXbvtp0mdA4fNkfWNmpkTiQCnOSMM8wEj4cflnbutJ0GXkJp9Qi/35TWSy81b6sCbjFihBkJ5aa1rY89Ji1ebGbRxsfbTgMca+xYc9X1vvtsJ4GXBF1fDh48qFGjRqlevXpKSEhQ9+7dNXfu3FM+b/LkyYqJiTnmV2xsrHbyo1rYLVsmffstSwPgPrVqSTfdZN6y3LfPdpqy++wzacwY6cEHpW7dbKcBjq9mTVNcX39d+vpr22ngFeWCfcL111+vt99+WyNHjlSzZs30xhtvaMCAAZo3b5569ux50uf6fD6NHTtWjRo1Our+atWqBRsDQZo5U6pWTerb13YSIPTuvNPMMH3hBen++22nKb1du6Q//MFsdInmzwPecMstprT+3/+Z4hobazsR3C6o0vr111/rP//5j5599lmNHDlSknTttdeqbdu2uvvuuzV//vxTfowLLrhAHTt2LF1alNrbb5vZrHFxtpMAoVe/vvTnP5txPH/+s3TaabYTBa+4WLr+erMje+pUCgCcr1w588Nijx7SxInSbbfZTgS3C2p5wPTp01WuXDnddNNNR+6rUKGC/vjHP+qrr77Stm3bSvRx9u/fr+Li4uCSotRWrza/Bg+2nQQIn3vuMWPdonWe6XPPSXPmSGlpZi4rEA26dTObsu6/X9qxw3YauF1QpXXZsmVq0aKFKleufNT9XX/ejr5s2bKTPt/v96tv376qWrWqEhISdMkll2jDhg1BRkawpk2TqlY1x14CblW7tjmp58UXpRL+/OwYixaZ0n333dIFF9hOAwTniSfM8cKclIVwC6q07tixQ0lJScfcn5SUJL/fr+3bt5/wuQkJCRo6dKgmTpyo//73vxo1apQ+/vhj9erVq8RXaBE8v1966y0zNYAzy+F2d9xhfkAbNcp2kpLbts1skOzSRXr0UdtpgOBVry4984z05pvSRx/ZTgM3C6q0FhQUqMJxmk/FihWP/PcTGTRokF5//XVdc801GjhwoB555BF9+OGHys3N1WMMIgybVavMkHKWBsALEhPNVZ+pU6UvvrCd5tTy880PlLGxZt05a84Rra69VurTR7r1VunAAdtp4FZBldb4+HgVFhYec/+Bn/+Exgc5ULBXr17q1q1biUZmoXTeest8Iz/vPNtJgMi44QZzgMZtt5k1rk7l90s33ihlZpqz3OvUsZ0IKD2fT3r5ZWnLFt4xQPgENT0gKSnpuEsAdvy8+rpuKXYP1K9fX+vWrSvRY0eOHKnExMSj7ktNTVVqamrQr+sFfr/0n/+Ytx7Ll7edBoiMmBhz0ED37mYEllPX2T36qPn7OWOG1KGD7TRA2bVubQ4bePRR8+5e+/a2EyGc0tPTlZ6eftR9eXl5YX3NoEprSkqK5s2bp/379x+1GWvhwoXy+XxKSUkJOsCmTZtUq1atEj12/PjxjMsKwjffSOvXcz40vKdrV3NS1n33SRdeKLVsaTvR0aZPN4cH/H97dx5XdZX+AfzzvbKJLBpIXMkURFrcGDVEwNFwXMclldSk0lR0LDVtck9L09LK3cFyDzG1hEFfYYPbNO6miC2mYsslEmQ0FQVZBM7vj/PzpoEMd/3ee/m8X6/7wg73yHN7uPJwvuf7nLffBgYOVDsaIvOZMUPe/Dt6NHDsGFu3ObKqFg1Pnz6Ndu3aWexrGrQ9ICYmBmVlZVizZo1+rLS0FJs2bUJ4eDgCAgIAAJcvX8aFCxdQfs+1uatXr1b6+3bv3o309HT06tXL2PipGlu2yEuO0dFqR0Jkfe+8I/u3jhhhW9sEDhwAYmOB557jEZjkeFxcgHXr5DHEy5erHQ05GoNWWsPCwvDss89ixowZyMvL05+IlZWVhY0bN+qfN336dCQkJECn0+HRRx8FAEREROBPf/oT2rdvD29vb6Snp2Pjxo1o0qQJZsyYYd5XRbhzB9i6VW6O52+6VBu5uwObNgFRUcCCBXJlU20nTwL9+wNPPy1jUxS1IyIyv/Bwuaf8jTfkjYZBQWpHRI7C4GNcN2/ejNmzZyMxMRHXr19H69atkZqaisjISP1zFEWBRnP/Iu7QoUORmpqKvXv34vbt29BqtRg7dizmzJlT4+0BVHP79skjIZ9/Xu1IiNQTEQG8+Sbw1lvyB6mavYrT0+XXb9lS7mPlPnNyZAsWADt3AmPHAnv28Bc0Mg9FCCHUDuJ/ubtHIj09nXtaayg2FjhzRra84j8WVJtVVMh9rSdPysKxSRPrx3DypCxYH3sMSEuTHT2IHF1amjwsY906YNQotaMha7B0vWbQnlayDzdvAv/8p1xlZcFKtZ1GAyQmAp6eQO/ewLVr1v36+/YBXbvKO6v37GHBSrVHjx7ASy8BkycDWVlqR0OOgEWrA9q2DSgpAV58Ue1IiGyDjw/wxRdAXh7Qp49s6m8NW7bIQjkyUhasXl7W+bpEtmLpUnli1siR8qoHkSlYtDqgDRvkJZn/b+ZARAAefxzYvRv45hu5XeDmTct9rbIyYMoUebVj2DB5eMA9XQKJag1vb/kz6cABID5e7WjI3rFodTBnzwInTnD/EFFVwsLkimtGBtCli1x5Nbdff5X7V5cuBZYsATZu5PGsVLt17QqMHw9MnSp7hxMZi0Wrg9mwAWjYUF4CJaLKOnUCDh4EcnOBdu3kn81BCCAhQXYHuHAB2LtX7uXjvnIiYOFCefVv+HDb6ptM9oVFqwMpKQE2b5a9WdlOh+jBWreWzc+Dg2XP1OnTgVu3jP/7Tp2SxfDw4fIXxu++k38vEUn16gEffyyvBC5apHY0ZK9YtDqQ5GTZm3X0aLUjIbJ9AQHA/v2yh+uyZUBIiDzyuKZ7XSsq5Gpqz57AU08B+fnyZqvERHnjCRHdLyICmDZNHvRx4oTa0ZA9YtHqQOLj5erOE0+oHQmRfahTB5g9W17Oj44GJk4EGjWSN1CtWwd8/TXw3/8CxcXA1atyBTUxEXj5ZVn0du8u98Vu3iz3yXbrpvYrIrJtc+cC7dvLY4wteTMkOSaDT8Qi2/Ttt8Dhw8Cnn6odCZH9adJEtqd67z1g/Xp5ks/WrQ9u0RMcLLsCxMTIk7a4b5WoZpydgU8+AUJDgXHj5C+BfP9QTbFodRCrVwP+/vKcZyIyTkCAvHQ5Z4683P/993Il9dYteTiBjw/QqhVQv77akRLZr6Ag4MMP5cmNPXqwpzjVHItWB3Dzprw8OXkyW+sQmYu3N9Cxo9pREDmmYcPkMa+vvCL3ugYHqx0R2QPuaXUA69fLPXdjx6odCRERUc2sWiWvEA4eDBQVqR0N2QMWrXaurAxYsQIYOpQnYBERkf3w9AQ++ww4dw6YMEHtaMgesGi1cykpgE4ntwYQERHZk9BQeU/G+vXyQVQdFq12bskSoHNnoG1btSMhIiIy3IgRQFyc3N+akaF2NGTLWLTasaNHgWPHuMpKRET2bcUKoEULYNAg4Pp1taMhW8Wi1Y698w7w5JNA375qR0JERGQ8Nzdgxw7gxg15uEd5udoRkS1i0WqnzpwBUlOBGTMADbNIRER2LjBQHjzwr3/J416J/ojljp1auFC+wYcOVTsSIiIi8+jZU96rsXgxsHGj2tGQreHhAnbowgV5XOvq1YATM0hERA5k4kTg7FnZezw4GOjUSe2IyFZwpdUOvfWW7Mk6fLjakRAREZmXosiDByIigIEDgZ9/VjsishUsWu3MN98A27bJs9Hd3NSOhoiIyPxcXICkJHmccp8+7ChAEotWOzNnDhAUJPvaEREROSofH+Dzz4HLl4H+/XnUK7FotSsnTgA7d8rtAc7OakdDRERkWY8/LgvXU6eA2Fi2wqrtWLTaCSGAv/8daNUKGDZM7WiIiIiso2NHefPxrl3Ayy/Ln4dUO/HeczuRnAwcOQKkpQF16qgdDRERkfX06QOsXQuMHAlotfKKI9U+LFrtQGmpbLTcsyfQvbva0RAREVnfSy/J/a0zZwKenvLqI9UuLFrtwPLlsuXHzp1qR0JERKSe6dOBW7eA11+XfcpffVXtiMiaWLTauOxseRlkwgSgRQu1oyEiIlKPogALFgBlZcCkSbJwfeUVtaMia2HRauMmT5Z96ubNUzsSIiIi9SkKsGiRLFzHj5fddMaMUTsqsgYWrTZs927ZXHnrVsDLS+1oiIiIbIOiAIsXy8J17Fh578f48WpHRZbGotVG5efLN2K3bsCQIWpHQ0REZFsURd7z4ewst9BduwbMni3HyTGxaLVRU6YAN27IFh98AxIREVWmKMAHH8jTs2bNAn77DVi6FNCwC71DYtFqg/bulcXq6tVAkyZqR0NERGS7FEW2wWrQQN6Udf06sH49T450RCxabczVq8Dw4UDXrtxYTkREVFPjxsnC9YUXgLw8YPt2oH59taMic+ICug0RAhg1Sm4oT0jg5Q0iIiJDDB0qT4786isgIgL46Se1IyJzYllkQ+Lj5dnKGzYAjRqpHQ0REZH9iY4GTpwA7twBwsKAQ4fUjojMhUWrjTh6VPZknTAB6NdP7WiIiIjsV0gIcPw40KqV3G63bp28mkn2jUWrDbh8GYiJATp0kHdBEhERkWl8fORWgZEjgbg4YMQIoLBQ7ajIFCxaVVZUBAwcKP/86aeAi4u68RARETkKFxfgww+BzZuBHTvk4tD582pHRcZi0aqiigrgxReBM2eAlBRAq1U7IiIiIsfz/PPAyZPy52779kBiIrcL2CMWrSoRApg6VR7T+skncrM4ERERWcaTT8quAgMHyrZYzz4LXLmidlRkCBatKlmwQJ6bvGwZ8MwzakdDRETk+Dw8ZEvJzz4DvvwSaNkS2LlT7aiopli0qmDpUnk+8ttvAxMnqh0NERFR7RITA3z3ndzj+swzcuX1v/9VOyr6X1i0WtmiRcBrrwHTpslzkomIiMj6/P3lKuvGjcDu3cBjj8nj08vL1Y6MHoRFq5UIAbzxBjB9OvDmm8C778rzkomIiEgdiiJbYV24AAwaBLz8MhAeDpw6pXZkVBUWrVZQWirfFAsWAO+9B7z1FgtWIiIiW+HrKw8gOHJEnqT11FNAbCzw889qR0b3YtFqYVeuAD16ANu2yS4BU6aoHRERERFVJSJCrrKuWQP8+99yy8CkScDVq2pHRgCLVov66iugbVvg7Flg717guefUjoiIiIiq4+QkT9C6eFFu59uwAQgKktv78vLUjq52Y9FqARUVwPvvA1FRQEAAcPo08Oc/qx0VERER1VS9evKG6Z9+AsaNA/7xD6BpU2DCBCArS+3oaicWrWb2449A166yO8CkScB//gM88ojaUREREZExfH1l559ffgFmzpRb/YKDgSFDgEOHeLKWNbFoNZPSUnmTVatWcuP2/v3yv11d1Y6MiIiITNWggeyxnpUlDwc6c0ZeRW3TRu6BvXVL7QgdH4tWEwkBfP65LFZnzAD+9jfZsPjpp9WOjIiIiMzNw0MeDHTuHLBnj9zvOm4c8PDDsuNAWhp7vVoKi1YjCQGkpgIdOwJ9+wKNGwMZGcCSJfIbmoiIiByXRgN06wakpAA6nVyFPX0a6NlT1gSvviq3CLKANR8WrQYqLweSkmRXgD595F2GX3whuwO0bq12dERERGRtjRvLq63ffw+cPCmPiU1KArp0kSdvjR4N7NrFLQSmMrhoLS0txbRp0xAQEAB3d3eEh4dj3759NZqbn5+PMWPGwM/PDx4eHoiOjkZGRobBQavh55+BOXOAwED5zejjI3u4HTokf6viYQFERES1m6IA7dsDK1bIG7eOHwdGjQIOHgT69wceegjo3Bl45x3ZFvPOHbUjti8GF63Dhw/HsmXL8MILL2DFihVwcnJC7969cfTo0WrnCSHQu3dvbNu2DRMnTsT777+PK1euoEuXLvjxxx+NfgGWlJcHrF8vuwEEBQHLlgG9esnfovbtk79BsVi1jK1bt6odAlkR8127MN+1S23Nt0YDdOgALFwIZGbKvq/LlwP168uj3Dt0ALy9ZRE7Y4a8P+a339SO2sYJA5w4cUIoiiKWLFmiHysuLhbBwcEiMjKy2rnbt28XiqKI5ORk/diVK1dEgwYNRGxsbLVz09PTBQCRnp5uSLgGKysTIj1diAULhAgPF0JRhNBohOjSRYiPPxaisNCiX57u0bdvX7VDICtivmsX5rt2Yb4rKykR4tgxIRYvFmLQICH8/YWQd8sI0by5EM8+K8T8+ULs2iWETidERYXaEdeMpes1J0MK3B07dsDJyQlxcXH6MVdXV4waNQqzZs3CpUuXEBAQUOXcpKQk+Pv7Y8CAAfoxX19fDB48GFu2bMGdO3fg7OxsVOFtrGvXZMuKY8fkZf6jR+V+k3r15CX/TZuA3r1ljzYiIiIic3BxAcLD5eO112S5qtMBR44AJ04A334LfPABcOOGfL63t+xSFBIie8Q2by4/NmsGeHqq+lKsyqCi9cyZMwgJCYHHH26PDwsL03/+QUVrRkYG2rZtW2k8LCwMa9euRWZmJlq0aGFIODUiBHD5MvDDD3Jp/uJF+c3w9dfAr7/K53h5AZGRcnm+UyfgqafYX5WIiIisQ1HkPTOBgcDzz8sxIWSd8s038vHtt/JjUhKQn//7XD8/oEkTeZDR3UdAgPyo1cqFt/r15XYFe2dQ0ZqbmwutVltpXKvVQgiBnJycaud27ty5yrkAkJOTU6OiVQigqEgm7MYN+cjPl/tAcnOBnJzfP+bkAJcuyecD8pvikUeAli3lN0WbNvIREgLUqVPD/wlEREREFqYositB48bAX//6+7gQ8krxDz/8/sjOlgXugQOy7rm7QnuXRiNvIPf1BRo2lB99feWYp6d8eHn9/uc//reHh23USQYVrUVFRXCtYgnSzc1N/3lj5goh/udcAOjc+RyKi4Gysqqf5+4uk3H3EREhk/LIIzLpAQGVV1CLiuSqK9mW/Px8nD59Wu0wyEqY79qF+a5dmG/LcHYGnnhCPv7o9m15M/m1a78v8N19XL8uF/fOnZP/ffs2UFj44Nrq3q/n6iq3Nri4/P7nez+WlJwDUH09aAqDita6deuipKSk0nhxcbH+88bMVRSl2rk6nQ4AUFDwfLXx3b4tj1fLyqr2aWQn2rVrp3YIZEXMd+3CfNcuzLf9u3On5i26dDodIiMjzR6DQUWrVqutcgtAbm4uAKBRo0bVzr37PEPn9ujRA4mJiWjatGm1xS0RERERqaOoqAg6nQ49evSwyN9vUNEaGhqKL7/8EgUFBffdjHX8+HEoioLQ0NBq5x4+fLjS+PHjx+Hu7o6QkJAHzvX19UVsbKwhoRIRERGRlVlihfUug+4li4mJQVlZGdasWaMfKy0txaZNmxAeHq7vHHD58mVcuHAB5fccuBsTE4O8vDwkJyfrx65evYodO3agX79+Vm93RURERET2QxFCCEMmDBkyBCkpKZg0aRKCg4OxadMmnDp1CgcOHNBX1yNGjEBCQgJ0Oh0effRRAEBFRQWioqJw9uxZvP766/D19UV8fDyys7Nx8uRJNG/e3PyvjoiIiIgcgkHbAwBg8+bNmD17NhITE3H9+nW0bt0aqamp9y0HK4oCzR8agmk0GnzxxReYMmUKVq5ciaKiIoSFhSEhIYEFKxERERFVy+CVViIiIiIia3OA8xGIiIiIyNGpWrSWlpZi2rRpCAgIgLu7O8LDw7Fv374azc3Pz8eYMWPg5+cHDw8PREdHIyMjw8IRkymMzfeBAwcwatQoPPbYY6hXrx6aNWuGuLg4XL582QpRk7FMeX/fKy4uDhqNBv369bNAlGQupuZ737596Nq1K+rXrw8vLy+0b98en332mQUjJlOYku/09HT06dMHWq0Wnp6eaNOmDVauXImKigoLR03GKiwsxJtvvolevXrBx8cHGo0GCQkJNZ5vtppNqGjo0KHCxcVFTJs2Taxdu1ZERkYKZ2dnceTIkWrnVVRUiIiICOHp6SnefvttER8fL1q2bCm8vLzEDz/8YKXoyVDG5rt9+/aiWbNmYvr06WL9+vVi1qxZwsvLS2i1WpGXl2el6MlQxub7XidPnhTOzs7C3d1d9O3b14LRkqlMyfeGDRuERqMRPXv2FPHx8eKjjz4Sr732mli8eLEVIidjGJvv9PR04erqKlq1aiWWLVsm1qxZIwYMGCAURRGTJk2yUvRkKJ1OJxRFEU2bNhXR0dFCo9GIjz/+uEZzzVmzqVa0njhxQiiKIpYsWaIfKy4uFsHBwSIyMrLaudu3bxeKoojk5GT92JUrV0SDBg1EbGysxWIm45mS70OHDlUaO3jwoFAURcyePdvssZLpTMn3vSIiIsTo0aNF06ZNWbTaMFPyrdPphLu7u5g8ebKlwyQzMSXfcXFxws3NTdy4ceO+8c6dO4v69etbJF4yXWlpqX6R6NSpU0JRlBoXreas2VTbHrBjxw44OTkhLi5OP+bq6opRo0bh2LFjuHTp0gPnJiUlwd/fHwMGDNCP+fr6YvDgwdi5cyfu1PScMbIaU/IdFRVVaaxTp0546KGHcO7cOYvES6YxJd93JSQk4OzZs1iwYIElQyUzMCXfq1evRkVFBebOnQtAXoYk22ZKvm/dugU3Nzd4e3vfN+7v788TL22Ys7Mz/Pz8jJprzppNtaL1zJkzCAkJue9kLQAICwvTf/5BMjIy0LZt20rjYWFhuH37NjIzM80bLJnMlHxXpbCwEAUFBfD19TVbjGQ+pua7oKAA06dPx6xZs4z+h5Ksx5R879+/H48//jhSU1PRuHFjeHp6wsfHB3PmzIFgcxubZEq+u3Tpgps3b2LMmDE4f/48fvnlF3z44YdISUnBzJkzLRo3qcOcNZvBfVrNJTc3F1qtttK4VquFEAI5OTnVzu3cuXOVcwEgJycHLVq0MF+wZDJT8l2VpUuX4s6dOxg6dKi5QiQzMjXfc+fOhbu7OyZNmmSpEMmMTMn3xYsXUadOHYwcORLTpk1D69atkZycjPnz56O8vJwr7TbIlHzHxcXh7Nmz+Oijj7Bu3ToAgJOTE1atWoUxY8ZYLGZSjzlrNtWK1qKiIri6ulYad3Nz03/emLlCiGrnkjpMyfcfHTx4EPPmzcOQIUOqfCOQ+kzJd2ZmJlasWIHt27fzeGc7YUq+CwoKIITAokWL8PrrrwMABgwYgN9++w3Lly/HzJkzUa9ePcsETkYxJd8ajQbNmjVDz549MXjwYLi6umLr1q0YP348/P392SXEAZmzZlOtaK1bty5KSkoqjRcXF+s/b8xcRVG4L8YGmZLve50/fx4DBw5E69atsXbtWrPGSOZjSr5fffVVREVF4ZlnnrFYfGRepv57fvv27UpXTZ577jmkpaUhIyOjyn3tpB5T8r1w4UKsXLkSFy9ehLu7OwAgJiYG0dHReOWVV9CnT59KJ2qSfTNnzabad4ZWq0Vubm6l8btjjRo1sshcUoc5cpadnY3u3bujQYMGSE1N5eqLDTM23wcOHEBaWhomTpyIrKwsZGVlQafToaysDEVFRcjKysKtW7csGjsZzpT3993PPfzww/eN+/n5QQiB69evmzFSMgdT8r169WpER0frC9a7+vXrh5ycHOh0OrPGSuozZ82mWtEaGhqKzMxMFBQU3Dd+/PhxKIqC0NDQaueePn260vjx48fh7u6OkJAQs8dLpjEl3wBw7do1dO/eHWVlZUhLS6v0A45si7H5zs7OhqIoGDBgAAIDAxEYGIigoCDk5ORg//79CAoKwsaNG63xEsgApry/27VrBwCV7ji/dOkSFEVBw4YNzR8wmcSUfOfl5aG8vLzS+N07yMvKyswbLKnOrDWbQQ2yzOhun7d7m0eXlJSI5s2bi4iICP1Ybm6uOH/+vCgrK9OPbd++XWg0GpGUlKQfu9vza9iwYdZ5AWQQU/JdWFgowsLChLe3t8jIyLBq3GQcY/OdnZ0tdu7cWenh5+cnwsLCxK5du8RPP/1k9ddD1TPl/Z2SkiIURRFvvPGGfqyiokJERUUJX19fUVpaap0XQTVmSr5btWolfH19xbVr1/Rj5eXlol27dsLb2/u+55Jtqq5Pq6VrNlVPxBo8eLBwcXERU6dOFWvWrBERERHCxcVFHD58WP+c4cOHC0VRRFZWln6svLxcdOzYUXh5eYl58+bpT1fw9vYWmZmZarwUqgFj892/f3+hKIoYPXq0SExMvO+RkpKixkuhGjA231Xh4QK2z5R8/+UvfxF16tQRY8eOFfHx8aJbt25CNPJt/gAAAW1JREFUo9GIdevWWftlUA0Zm+8tW7YIjUYjgoODxXvvvSdWrlwpOnbsKDQajXj33XfVeClUQ6tWrRLz588X48aNE4qiiEGDBon58+eL+fPni5s3bwohLF+zqVq0lpSUiKlTp4pGjRqJunXrig4dOoi9e/fe95wRI0aIOnXqVPpH7saNGyIuLk40bNhQeHh4iOjoaHH69Glrhk8GMjbfTZs2FRqNpspHYGCgtV8G1ZAp7+8/CgwMFP369bNkuGQiU/JdWFgoJk+eLBo1aiTc3NxEmzZtxNatW60ZPhnIlHzv2bNHPP3008LPz0+f77Vr11ozfDJCdT+L7+bY0jWbIgS7NxMRERGRbWNfCSIiIiKyeSxaiYiIiMjmsWglIiIiIpvHopWIiIiIbB6LViIiIiKyeSxaiYiIiMjmsWglIiIiIpvHopWIiIiIbB6LViIiIiKyeSxaiYiIiMjmsWglIiIiIpvHopWIiIiIbN7/AQwALxRXRg+UAAAAAElFTkSuQmCC",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x7f826bb36cd0>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "d_continuous = Truncated(MixtureModel(Normal, [(.275, .075), (.65, .1)], [0.65, 0.35]), 0, 1)\n",
    "xs = linspace(d_continuous.lower, d_continuous.upper, 300)\n",
    "ys = pdf(d_continuous, xs)\n",
    "plot(xs, ys);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Non-private histogram approximation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqgAAAIUCAYAAADWsN5SAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIABJREFUeJzt3X1wVFWe//FPN4E0EQiQhDVBEQGDQQVMgPVxZEHlwZBZB4ymjA6uoG5tBozsD8fnGpEyrixRmUGFYYVUqJQawREVnAGf1nWUBXwoNYDuKG2FgLYZICHpAMn9/TGQSdMdSD/c7pPu96vqVpHT9/Y53ae78+Hc9P06LMuyBAAAABjCGesBAAAAAB0RUAEAAGAUAioAAACMQkAFAACAUQioAAAAMAoBFQAAAEYhoAIAAMAoBFQAAAAYhYAKAAAAoxBQAQAAYJSwA+rixYvldDo1evRon/bbbrtNTqfTbxs1alS4XQIAACCOJYVzcG1trR5//HH16dMn4O0ul0urVq2SZVntbampqeF0CQAAgDgXVkBdsGCBLr30Uh07dkw//fST/50nJamoqCicLgAAAJBgQj7F//7772vdunV66qmnTrlfW1ubGhoaQu0GAAAACSakgNrW1qZ58+Zp7ty5uuCCCzrdr6mpSf369VNqaqrS0tJUUlKiw4cPhzxYAAAAxL+QTvE/++yzcrvdevvttzvdJysrSwsXLlRubq7a2tq0adMmLV++XJ9//rneffddOZ1cQAAAAAD+gg6o9fX1euSRR/Twww9r4MCBne63ePFin58LCwt13nnn6cEHH1R1dbUKCwsDHufxePTWW29p6NCh6t27d7DDAwAAgM2am5v13XffacqUKUpPT498B1aQ7rrrLis7O9s6evRoe9vEiROtiy666LTHNjc3Wz169LDmzp3b6T6VlZWWJDY2NjY2NjY2NsO3ysrKYKNklwS1gvrNN99o5cqVevrpp1VbWytJsixLXq9XR48e1Z49e9SvXz8NGDAg4PEul0tpaWmqr6/vtI+hQ4dKkiorK5WTkxPM8BAFpaWlKi8vj/UwEABzYzbmx1zMjbmYG3PV1NSouLi4PbdFWlABtba2VpZlad68efrVr37ld/uwYcM0f/58LV26NODxjY2N8ng8ysjI6LSPE6f1c3JylJubG8zwEAWpqanMi6GYG7MxP+ZibszF3JjPrj/HDCqgXnjhhVq/fr1f+wMPPKDGxkY988wzGjZsmFpaWnT06FG/C/g/+uijkqRp06aFMWQAAADEs6ACalpamgoKCvzay8vL5XA4NGPGDEnSnj17dPHFF6uoqEjnn3++JGnTpk3auHGjpk+fHvA+AAAAACnMSlIdORyO9n/3799fM2bM0ObNm1VRUaHW1laNGDFCZWVlWrBgQaS6BAAAQByKSEB95513fH5OTU3VmjVrInHXMAyla83F3JiN+TEXc2Mu5iZxOSzLsmI9iI527NihvLw8bd++nT+MBgAAMJDdeY1yTgAAADAKARUAAABGIaACAADAKARUAAAAGIWACgAAAKMQUAEAAGAUAioAAACMQkAFAACAUQioAAAAMAoBFQAAAEYhoAIAAMAoBFQAAAAYhYAKAAAAoxBQAQAAYBQCKgAAAIxCQAUAAIBRCKgAAAAwCgEVAAAARiGgAgAAwCgEVAAAABiFgAoAAACjEFABAABgFAIqAAAAjEJABQAAgFEIqAAAADAKARUAAABGIaACAADAKARUAAAAGIWACgAAAKMQUAEAAGAUAioAAACMQkAFAACAUQioAAAAMAoBFQAAAEZJivUAgEhzu93yeDx+7enp6RoyZEgMRgQAAIJBQEVccbvdGjkyR15vk99tLleKdu2qIaQCAGA4TvEjrng8nuPhtFLS9g5bpbzepoArqwAAwCysoCJO5UjKjfUgAABACMJeQV28eLGcTqdGjx7td9vOnTs1depU9e3bV2lpabr11ltZwQIAAMAphbWCWltbq8cff1x9+vQJeNuVV16pAQMGqKysTA0NDXryySf1xRdfaOvWrUpKYvEWAAAA/sJKiQsWLNCll16qY8eO6aeffvK5bfHixWpubtann36qwYMHS5LGjx+va665RqtXr9acOXPC6RoAAABxKuRT/O+//77WrVunp556KuDt69atU35+fns4laTJkycrOztbL730UqjdAgAAIM6FFFDb2to0b948zZ07VxdccIHf7Xv37tUPP/ygcePG+d02YcIEffLJJ6F0CwAAgAQQ0in+Z599Vm63W2+//XbA2+vq6iRJmZmZfrdlZmaqvr5eR48eVc+ePUPpHgAAAHEs6BXU+vp6PfLII3r44Yc1cODAgPs0NzdLkpKTk/1uc7lcPvsAAAAAHQUdUB944AGlpaWppKSk03169+4tSWppafG7zev1+uwDAAAAdBTUKf5vvvlGK1eu1NNPP63a2lpJkmVZ8nq9Onr0qPbs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uuSSS7R58+YuHXvw4EHdcccdGjRokPr06aNJkybpk08+sXnEiSPUuXn77bd1++23a+TIkTrjjDM0fPhwzZ07V/v27YvCqBNDOO+bjubOnSun06mCggIbRpm4wp2fzZs3a/Lkyerfv7/69euncePG6eWXX7ZxxIkjnLnZvn278vPzlZmZqb59+2rMmDFatmxZwAvlI3iHDx/WI488omnTpiktLU1Op1MVFRVdPp5MYJ9w5ibimcCWq6sGcNNNN1m9evWy7r33XmvlypXW5ZdfbvXs2dP6n//5n1Me19bWZl122WVW3759rUWLFlnLly+3LrzwQqtfv37WN998E6XRx7dQ52bcuHHW8OHDrV//+tfWqlWrrAceeMDq16+flZmZae3fvz9Ko49voc5NR//7v/9r9ezZ00pJSbFmzJhh42gTTzjz81//9V+W0+m0pk6dai1fvtx6/vnnrXvuucf6z//8zyiMPP6FOjfbt2+3kpOTrYsuush66qmnrBUrVljXX3+95XA4rLvvvjtKo49v3333neVwOKyhQ4dakyZNspxOp7VmzZouHUsmsFc4cxPpTBCVgPrxxx9bDofDWrp0aXub1+u1RowYYV1++eWnPPbFF1+0HA6HtW7duva2H3/80RowYIB188032zbmRBHO3Pz3f/+3X9v7779vORwO66GHHor4WBNNOHPT0WWXXWbNmTPHGjp0KAE1gsKZn++++85KSUmxSktL7R5mQgpnbubOnWu5XC7rwIEDPu1XXXWV1b9/f1vGm2iOHDnSHli2bdtmORyOLocgMoG9wpmbSGeCqJzir66uVlJSkubOndvelpycrNtvv11//vOfVVtb2+mxr7zyis4880xdf/317W3p6ekqLCzUH/7wBx09etTWsce7cObmiiuu8Gu78sorNXDgQL+azQheOHNzQkVFhb788kstXrzYzqEmpHDm59lnn1VbW5t+85vfSPrbaTVETjhz09DQIJfLpdTUVJ/2M888k+qGEdKzZ08NGjQopGPJBPYKZ24inQmiElA//fRTZWdn+1SUkv52rdQTt3fmk08+UW5url/7hAkT1NTUpN27d0d2sAkmnLkJ5PDhw2psbFR6enrExpiowp2bxsZG/frXv9YDDzwQ8gcOOhfO/GzZskXnn3++3njjDZ199tnq27ev0tLS9PDDD8viwiphC2duJk6cqEOHDumOO+7Qzp075Xa79dxzz+nVV1/V/fffb+u4cXpkgu4lnExg24X6O6qrq1NmZqZfe2ZmpizL0t69e0957FVXXRXwWEnau3evLrjggsgNNsGEMzeBlJeX6+jRo7rpppsiNcSEFe7c/OY3v1FKSoruvvtuu4aY0MKZn6+//lo9evTQv/zLv+jee+/V6NGjtW7dOj322GNqbW1lxTtM4czN3Llz9eWXX+r555/X73//e0lSUlKSfvvb3+qOO+6wbczoGjJB9xJOJohKQG1ublZycrJfu8vlar89lGMtyzrlsTi9cObmZO+//74effRR3XjjjQE/QBCccOZm9+7deuaZZ/Tiiy+qZ8+eto0xkYUzP42NjbIsS0888YT+/d//XZJ0/fXX66efftLTTz+t+++/X2eccYY9A08A4cyN0+nU8OHDNXXqVBUWFio5OVlVVVUqKSnRmWeeyZUwYoxM0H2EmwmiElB79+6tlpYWv3av19t+eyjHOhwO/iYoTOHMTUc7d+7UL37xC40ePVorV66M6BgTVThzM3/+fF1xxRX653/+Z9vGl+jC/VxramryW1UoKirSW2+9pU8++STg33Oha8KZm7KyMi1btkxff/21UlJSJEmzZs3SpEmT9G//9m/Kz8+X08klxGOFTNA9RCITROVdlpmZqbq6Or/2E21ZWVm2HIvTi8Tz+/333+vaa6/VgAED9MYbb7DyEyGhzs3bb7+tt956S/PmzdOePXu0Z88efffddzp27Jiam5u1Z88eNTQ02Dr2RBDOe+fEbf/wD//g0z5o0CBZlqW//vWvERxp4glnbp599llNmjSpPZyeUFBQoL179+q7776L6FgRHDKB+SKVCaISUMeOHavdu3ersbHRp/2jjz6Sw+HQ2LFjT3nsjh07/No/+ugjpaSkKDs7O+LjTSThzI0k1dfX69prr9WxY8f01ltv+f3CRehCnZvvv/9eDodD119/vc4991yde+65GjZsmPbu3astW7Zo2LBheuGFF6LxEOJaOO+dvLw8SfL7Nnltba0cDocyMjIiP+AEEs7c7N+/X62trX7tJ74dfuzYscgOFkEhE5gtkpkgKgF11qxZOnbsmFasWNHeduTIEa1evVqXXHKJBg8eLEnat2+fdu3a5fPhMGvWLO3fv1/r1q1rb/N4PKqurlZBQQF/XxemcOamqalJ06ZNU11dnd58800NGzYs6uOPZ6HOzeTJk7V+/Xq9+uqrPlt6errGjx+vV199VTNmzIjJY4on4bx3brzxRlmWpVWrVrW3WZalF154QQMHDmwPsAhNOHOTnZ2tP/3pTz6r2G1tbXrxxRfVt29fDR8+PHoPJMGRCcwVlUwQ9JVTQ1RYWGj16tXLWrhwobVixQrrsssus3r16mV98MEH7fv88pe/tBwOh7Vnz572ttbWVuvSSy+1+vXrZz366KPtVSNSU1Ot3bt3R2v4cS3Uufn5z39uORwOa86cOVZlZaXP9uqrr8biocSdUOcmEC7UH3nhzM/VV19t9ejRw7rzzjut5cuXW9dcc43ldDqt3//+99F+GHEp1LlZu3at5XQ6rREjRlj/8R//YS1btsy69NJLLafTaT3++OOxeChx6be//a312GOPWf/6r/9qORwOa+bMmdZjjz1mPfbYY9ahQ4csyyITxEqocxPpTBC1gNrS0mItXLjQysrKsnr37m394z/+o/WnP/3JZ5/Zs2dbPXr08PsgP3DggDV37lwrIyPD6tOnjzVp0iRrx44d0Rp63At1boYOHWo5nc6A27nnnhvthxGXwnnfnOzcc8+1CgoK7Bxuwglnfg4fPmyVlpZaWVlZlsvlssaMGWNVVVVFc/hxLZy5+eMf/2j90z/9kzVo0KD2uVm5cmU0hx/3TvX748R8kAliI9S5iXQmcFgWV4UGAACAObhWBgAAAIxCQAUAAIBRCKgAAAAwCgEVAAAARiGgAgAAwCgEVAAAABiFgAoAAACjEFABAABgFAIqAAAAjEJABQAAgFEIqAAAADAKARUAAABG+f8BsN9GRupx9QAAAABJRU5ErkJggg==",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x7f826ba7bb50>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_samples = 1000\n",
    "domain_size = 100\n",
    "samples = rand(d_continuous, num_samples)\n",
    "\n",
    "function histogram_from_sample(samples, num_bins)\n",
    "    @assert 0 <= minimum(samples)\n",
    "    @assert maximum(samples) <= 1\n",
    "    h = zeros(num_bins)\n",
    "    for x in round(Int64, samples*num_bins)\n",
    "        h[x] += 1\n",
    "    end\n",
    "    collect(1:num_bins)/num_bins, h\n",
    "end\n",
    "\n",
    "xs, ys = histogram_from_sample(samples, domain_size)\n",
    "bar(xs, ys, width=1/domain_size);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Private histogram approximation"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Obtaining a private approximation is as easy as running the following command."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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4O8VfA1qSUlJ7LPPPvHee++1jt13330xceLE1jiNiDj55JNj1KhRcc899xQ6JQAAPVinXmtvamqKXC4XjY2N8eCDD8a8efOivr4+IiKWLVsWf/nLX+Lwww9vd9748eNj3rx5ha0YAIAerVOBeuWVV8att94aERGlpaVx3nnnxc033xwREcuXL4+IiOHDh7c7b/jw4bFmzZrYvHlz9O3bt7NrBgCgB+tUoE6bNi3OP//8WLZsWdxzzz3R0tISzc3NERGRy+UiIqJfv37tzquoqGg9RqACALAtnQrUUaNGxahRoyIi4jOf+UycfvrpMWnSpHjqqaeisrIyIqI1WD9o06ZNERGtx+zItGnToqqqqs1YfX1966UEAAAUX0NDQzQ0NLQZa2xsLOqcXfJ5T5MnT44vfelL8dprr7W+tP/+S/0ftHz58thrr7126tnTmTNnRm1tbVcsDwCATtrWE4QLFy6McePGFW3OLvkmqfdf1m9sbIwRI0bE0KFD49lnn2133DPPPBNjx47tiikBAOihOhSoq1ataje2ZcuWuPPOO6OysjIOPvjgiIg477zz4uGHH46lS5e2HrdgwYJYvHhx1NXVFbhkAAB6sg69xP/FL34x1q1bF8cff3yMHDkyVqxYEXfddVe8+uqrcdNNN0X//v0jIuLaa6+NuXPnxoknnhiXX355rF+/PmbMmBGHHnpoXHLJJcV4HAAA9BAdCtQLL7wwbr/99vjpT38a7777bgwaNCjGjRsXN954Y5x11lmtx33kIx+JJ554Iq644oq45pprory8PCZOnBgzZszw7n0AAHaoQ4FaV1e30y/RH3TQQT6UHwCADuuSN0kBAEBXEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACSlQ4H67LPPxtSpU+OQQw6JgQMHxr777hsXXHBBvPbaa22Ou/TSS6O0tLTd7eCDD+7SxQMA0PP06cjB3//+9+PJJ5+M888/P8aMGRMrVqyIm2++OWpra+Ppp59uE6AVFRVx++23R5ZlrWNVVVVdt3IAAHqkDgXqlVdeGQ0NDdGnz/8/ra6uLj7xiU/E9OnTY/bs2f//B/fpE/X19V23UgAAeoUOvcR/5JFHtonTiIiampr4+Mc/Hq+88kq747du3Rrr168vbIUAAPQqXfImqZUrV8aQIUPajDU1NcUee+wRVVVVMXjw4Jg6dWps3LixK6YDAKAH69BL/NsyZ86cWLp0aVx//fWtYyNGjIirrroqamtrY+vWrfHII4/ELbfcEn/84x/j8ccfj9JSHx4AAMC2FRSoixYtiqlTp8YxxxwTF198cev4DTfc0Oa4urq6+OhHPxrf+MY3Yu7cuVFXV1fItOwCuVwu8vl8m7GWlpYoKyvr8FhjY2PkN28u3mIBgN1apwN15cqVcdZZZ0V1dXX84he/iJKSkh0eP23atPjmN78Z8+fPF6i7mVwuF489+GC0rF3bOtacz8erb7wRo2tqorxv3w6Nbczl4s2XXorjjj8+YsCA7n9AAEDSOhWo69atizPOOCPWrVsXv//972Pvvff+0HMqKipi8ODBsWbNmp2aY9q0ae0+lqq+vt4nA+wC+Xw+WtaujdrKyhhYUREREcvWrIlFq1bFmNGjY1h1dcfGsixeb2qKLS0tu+YBAQA7raGhIRoaGtqMNTY2FnXODgdqc3NzTJw4MV5//fVYsGBBfOxjH9up8zZs2BCrV6+OoUOH7tTxM2fOjNra2o4ujyIaWFERVX97xrOxqSkiIgYUMAYApG9bTxAuXLgwxo0bV7Q5OxSoW7dujbq6unj66afjl7/8ZYwfP77dMc3NzbF58+YYOHBgm/HrrrsuIiImTJhQwHIBAOjpOhSoV1xxRTz00EMxadKkWL16ddx1111t7r/oootixYoVcdhhh0V9fX2MHj06IiIeeeSRmDdvXpx55pkxadKkrls9AAA9TocC9cUXX4ySkpJ46KGH4qGHHmp3/0UXXRR77rlnnH322TF//vyYPXt2tLS0RE1NTUyfPj2uvPLKLls4AAA9U4cC9bHHHvvQY6qqquLOO+/s9IIAAOjdfGI+AABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkJQOBeqzzz4bU6dOjUMOOSQGDhwY++67b1xwwQXx2muvtTt20aJFccYZZ8SgQYNi8ODBcfHFF8fq1au7bOEAAPRMfTpy8Pe///148skn4/zzz48xY8bEihUr4uabb47a2tp4+umn4+CDD46IiKVLl8Zxxx0X1dXVMX369Fi/fn3ceOON8ac//SmeeeaZ6NOnQ9MCANCLdKgUr7zyymhoaGgTmHV1dfGJT3wipk+fHrNnz46IiBtuuCFyuVy88MILMXLkyIiIOOKII+LUU0+NO+64Iy677LIufAgAAPQkHXqJ/8gjj2z37GdNTU18/OMfj1deeaV17L777ouJEye2xmlExMknnxyjRo2Ke+65p8AlAwDQk3XJm6RWrlwZQ4YMiYiIZcuWxV/+8pc4/PDD2x03fvz4eP7557tiSgAAeqiCA3XOnDmxdOnSuPDCCyMiYvny5RERMXz48HbHDh8+PNasWRObN28udFoAAHqoggJ10aJFMXXq1DjmmGPi4osvjoiIXC4XERH9+vVrd3xFRUWbYwAA4O91+u30K1eujLPOOiuqq6vjF7/4RZSUlERERGVlZURENDc3tztn06ZNbY7ZkWnTpkVVVVWbsfr6+qivr+/skgEA6KCGhoZoaGhoM9bY2FjUOTsVqOvWrYszzjgj1q1bF7///e9j7733br3v/Zf233+p/4OWL18ee+21V/Tt2/dD55g5c2bU1tZ2ZnkAAHSRbT1BuHDhwhg3blzR5uxwoDY3N8fEiRPj9ddfjwULFsTHPvaxNvePGDEihg4dGs8++2y7c5955pkYO3Zs51cLAECP16FrULdu3Rp1dXXx9NNPx9y5c2P8+PHbPO68886Lhx9+OJYuXdo6tmDBgli8eHHU1dUVtmIAAHq0Dj2DesUVV8RDDz0UkyZNitWrV8ddd93V5v6LLrooIiKuvfbamDt3bpx44olx+eWXx/r162PGjBlx6KGHxiWXXNJliwcAoOfpUKC++OKLUVJSEg899FA89NBD7e5/P1A/8pGPxBNPPBFXXHFFXHPNNVFeXh4TJ06MGTNm7NT1pwAA9F4dCtTHHntsp4896KCDYt68eR1eEAAAvVuXfJMUAAB0FYEKAEBSBCoAAEkRqAAAJEWgAgCQFIEKAEBSBCoAAEkRqAAAJEWgAgCQFIEKAEBSOvRVp0BEcz4fjY2NbcZaWlqirKysy8a2N15eXh6VlZWFLB8AkidQoQNy+Xy8/OKLsbWlpTUUm/P5ePWNN2J0TU2U9+1b8NiOxsuqq+NT55wjUgHo0QQqdEB+y5YozeXisIqKGFZdHRERy9asiUWrVsWY0aO7ZGx74xs2bYqFa9dGPp8XqAD0aAIVOmFARUVUDRgQERGNTU1dOraj8cjlivWQACAZ3iQFAEBSBCoAAEkRqAAAJEWgAgCQFIEKAEBSBCoAAEkRqAAAJEWgAgCQFIEKAEBSBCoAAEkRqAAAJEWgAgCQFIEKAEBSBCoAAEkRqAAAJEWgAgCQFIEKAEBSBCoAAEkRqAAAJEWgAgCQFIEKAEBSBCoAAEkRqAAAJEWgAgCQFIEKAEBSBCoAAEkRqAAAJEWgAgCQFIEKAEBSBCoAAEkRqAAAJEWgAgCQFIEKAEBSBCoAAEkRqAAAJEWgAgCQFIEKAEBSBCoAAEkRqAAAJEWgAgCQlA4H6saNG+Pb3/52TJgwIQYPHhylpaUxe/bsdsddeumlUVpa2u528MEHd8nCAQDomfp09ITVq1fHd7/73dh3331j7Nix8fjjj2/32IqKirj99tsjy7LWsaqqqk4tFACA3qHDgTpixIhYsWJFDBs2LJ577rk44ogjtv/D+/SJ+vr6ghYIAEDv0uGX+Pv27RvDhg3b6eO3bt0a69ev7+g0AAD0UkV9k1RTU1PsscceUVVVFYMHD46pU6fGxo0bizklAAC7uQ6/xL+zRowYEVdddVXU1tbG1q1b45FHHolbbrkl/vjHP8bjjz8epaU+QAAAgPaKFqg33HBDmz/X1dXFRz/60fjGN74Rc+fOjbq6umJNDQDAbqxbn8acNm1alJSUxPz587tzWgAAdiNFewZ1WyoqKmLw4MGxZs2aDz122rRp7T6Sqr6+3qcCAAB0o4aGhmhoaGgz1tjYWNQ5uzVQN2zYEKtXr46hQ4d+6LEzZ86M2trablgVAADbs60nCBcuXBjjxo0r2pxFeYm/ubk5NmzY0G78uuuui4iICRMmFGNaAAB6gE49g/rjH/843nvvvVi6dGlERPzyl7+Md955JyIivvKVr8SaNWvisMMOi/r6+hg9enRERDzyyCMxb968OPPMM2PSpEldtHwAAHqaTgXqjBkz4u23346IiJKSkrj//vvj/vvvj4iIz372s7HnnnvG2WefHfPnz4/Zs2dHS0tL1NTUxPTp0+PKK6/sutUDANDjdCpQ33zzzQ895s477+zMjwYAoJfzafkAACSlW9/FD9AT5HK5yOfzbcZaWlqirKysU2OFnt9dc5eXl0dlZWW78wG6mkAF6IBcLhePPfhgtKxd2zrWnM/Hq2+8EaNraqK8b98OjRV6fnfNHRFRVl0dnzrnHJEKFJ1ABeiAfD4fLWvXRm1lZQysqIiIiGVr1sSiVatizOjRMay6ukNjhZ7fXXNv2LQpFq5dG/l8XqACRSdQATphYEVFVA0YEBERjU1NERExoBNjhZ7fXXNHREQu19G/JoBO8SYpAACSIlABAEiKQAUAICkCFQCApAhUAACSIlABAEiKQAUAICkCFQCApAhUAACSIlABAEiKQAUAICkCFQCApAhUAACSIlABAEiKQAUAICkCFQCApAhUAACSIlABAEiKQAUAICkCFQCApAhUAACSIlABAEiKQAUAICkCFQCApAhUAACSIlABAEiKQAUAICkCFQCApAhUAACSIlABAEiKQAUAICkCFQCApAhUAACSIlABAEiKQAUAICkCFQCApAhUAACSIlABAEiKQAUAICkCFQCApAhUAACSIlABAEiKQAUAICkCFQCApAhUAACSIlABAEiKQAUAICkCFQCApAhUAACSIlABAEhKhwN148aN8e1vfzsmTJgQgwcPjtLS0pg9e/Y2j120aFGcccYZMWjQoBg8eHBcfPHFsXr16oIXDQBAz9XhQF29enV897vfjUWLFsXYsWOjpKRkm8ctXbo0jjvuuPjzn/8c06dPj3/913+NX/3qV3Ha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+Z9ZaWlpdsYZZ2S33HJLduutt2ZXXHFF9u///u/dsPKer7N789xzz2X9+vXLPvGJT2Q/+MEPslmzZmXnnntuVlJSkn31q1/tptX3bG+99VZWUlKS7bffftlJJ52UlZaWZnfeeedOnasJiquQvenqJuiWQH366aezkpKS7Kabbmod27RpU1ZTU5Mdc8wxOzz37rvvzkpKSrL77ruvdWzVqlVZdXV1dtFFFxVtzb1FIXvz3//93+3Gfve732UlJSXZN7/5zS5fa29TyN580NFHH51ddtll2X777SdQu1Ah+/PWW29l/fv3z6ZNm1bsZfZKhezNlClTsoqKiuy9995rM37CCSdke+65Z1HW29vk8/nWYHn22WezkpKSnY4gTVBchexNVzdBt7zEP3fu3OjTp09MmTKldaxfv37x+c9/Pv7whz/E0qVLt3vuvffeG3vvvXece+65rWNDhgyJurq6ePDBB2Pz5s1FXXtPV8jeHHvsse3GjjvuuNhrr71av6OXzitkb943e/bseOmll+KGG24o5lJ7pUL25yc/+Uls3bo1vvOd70TEX19Wo+sUsjfr16+PioqKqKqqajO+9957+3bDLtK3b98YNmxYp87VBMVVyN50dRN0S6C+8MILMWrUqDbfKBXx189Kff/+7Xn++eejtra23fj48eOjqakpFi9e3LWL7WUK2Ztt2bhxY2zYsCGGDBnSZWvsrQrdmw0bNsTXvva1+PrXv97pXzhsXyH7s2DBghg9enT86le/in322ScGDRoUgwcPjm9961uR+WCVghWyNyeeeGKsW7cuvvCFL8SiRYvi7bffjp/+9KfxwAMPxLXXXlvUdfPhNMHupZAmKNoH9X/Q8uXLY/jw4e3Ghw8fHlmWxbJly3Z47gknnLDNcyMili1bFh//+Me7brG9TCF7sy0zZ86MzZs3x4UXXthVS+y1Ct2b73znO9G/f//46le/Wqwl9mqF7M9rr70WZWVl8U//9E9x9dVXx5gxY+K+++6L66+/PlpaWjzjXaBC9mbKlCnx0ksvxa233ho/+9nPIiKiT58+8aMf/Si+8IUvFG3N7BxNsHsppAm6JVBzuVz069ev3XhFRUXr/Z05N8uyHZ7Lhytkb/7e7373u7juuuviggsu2OYvEDqmkL1ZvHhx/PCHP4y77747+vbtW7Q19maF7M+GDRsiy7L4/ve/H//yL/8SERHnnntuvPvuu/Ef//Efce2118aAAQOKs/BeoJC9KS0tjQMPPDDOOOOMqKuri379+kVDQ0NMnTo19t57b5+EsYtpgt1HoU3QLYFaWVkZzc3N7cY3bdrUen9nzi0pKXFNUIEK2ZsPWrRoUXz605+OMWPGxG233dala+ytCtmbyy+/PI499tj4x3/8x6Ktr7cr9PdaU1NTu2cV6uvr49FHH43nn39+m9dzsXMK2Zvp06fHzTffHK+99lr0798/IiImT54cJ510UvzzP/9zTJw4MUpLfYT4rqIJdg9d0QTd8q9s+PDhsXz58nbj74+NGDGiKOfy4bri7/edd96J0047Laqrq+NXv/qVZ366SGf35re//W08+uij8ZWvfCWWLFkSS5Ysibfeeiu2bNkSuVwulixZEuvXry/q2nuDQv7tvH/fP/zDP7QZHzZsWGRZFmvXru3ClfY+hezNT37ykzjppJNa4/R9kyZNimXLlsVbb73VpWulYzRB+rqqCbolUMeOHRuLFy+ODRs2tBl/6qmnoqSkJMaOHbvDcxcuXNhu/Kmnnor+/fvHqFGjuny9vUkhexMRsWbNmjjttNNiy5Yt8eijj7b7Dy6d19m9eeedd6KkpCTOPffc2H///WP//fePAw44IJYtWxYLFiyIAw44IH7+8593x0Po0Qr5tzNu3LiIiHbvJl+6dGmUlJTE0KFDu37BvUghe7Ny5cpoaWlpN/7+u8O3bNnStYulQzRB2rqyCbolUCdPnhxbtmyJWbNmtY7l8/m444474sgjj4yRI0dGRMSKFSvi1VdfbfPLYfLkybFy5cq47777WsdWr14dc+fOjUmTJrm+rkCF7E1TU1NMmDAhli9fHr/+9a/jgAMO6Pb192Sd3ZuTTz457r///njggQfa3IYMGRJHHHFEPPDAA3H22WfvksfUkxTyb+eCCy6ILMvi9ttvbx3Lsix+/vOfx1577dUasHROIXszatSo+M1vftPmWeytW7fG3XffHYMGDYoDDzyw+x5IL6cJ0tUtTdDhT07tpLq6uqy8vDy76qqrslmzZmVHH310Vl5env3+979vPeZzn/tcVlJSki1ZsqR1rKWlJTvqqKOyPfbYI7vuuutavzWiqqoqW7x4cXctv0fr7N6cc845WUlJSXbZZZdlc+bMaXN74IEHdsVD6XE6uzfb4oP6u14h+3PKKadkZWVl2Re/+MXslltuyU499dSstLQ0+9nPftbdD6NH6uze3HXXXVlpaWlWU1OT/du//Vt28803Z0cddVRWWlqafe9739sVD6VH+tGPfpRdf/312Ze//OWspKQkO++887Lrr78+u/7667N169ZlWaYJdpXO7k1XN0G3BWpzc3N21VVXZSNGjMgqKyuzT37yk9lvfvObNsdccsklWVlZWbtf5O+99142ZcqUbOjQodnAgQOzk046KVu4cGF3Lb3H6+ze7Lfffllpaek2b/vvv393P4weqZB/N39v//33zyZNmlTM5fY6hezPxo0bs2nTpmUjRozIKioqskMPPTRraGjozuX3aIXszX/9139ln/rUp7Jhw4a17s1tt93Wncvv8Xb034/390MT7Bqd3ZuuboKSLPOp0AAApMNnZQAAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACRFoAIAkBSBCgBAUgQqAABJEagAACTl/wEyecgnkgioFAAAAABJRU5ErkJggg==",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x7f8268fb0c50>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mw = mwem(RangeQueries(domain_size), Histogram(ys/sum(ys), num_samples));\n",
    "bar(xs, mw.synthetic.weights*num_samples, align=\"center\", color=\"red\", alpha=0.3, width=1/domain_size);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Above we ran `mwem` with the default parameters corresponding to `10` iterations and `epsilon=1.0` per iteration. We can adjust these parameters as follows:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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7XnnnntuLFiwIA499NAoKysr1PIAAGijXC4Xb775Zpx77rkF+fkFC9SxY8fGE088EXV1dc1ulHr66aejqKgoxo4du9vzBg0aFJdddlmhlgUAQAc46aSTCvazC3aT1NSpU2Pnzp0xZ86cprF8Ph/z5s2L448/PoYPH16oqQEA2I8V7Arq+PHj4+KLL44bbrgh1q9fHyNHjox58+bFqlWr4uc//3mhpgUAYD9XlGVZVqgfns/n45vf/GYsWLAgNm/eHGPGjImbb745zjrrrEJNCQDAfq6ggQoAAK1VsM+gAgBAW3RaoObz+bj++utj+PDh0adPnzj++ONjyZIle3VubW1tfOELX4ghQ4ZEv3794owzzojnn3++wCvuPtq6N7/97W/j85//fHzsYx+Lvn37xogRI2LatGmxbt26Tlh199CePzfvN23atCguLo7JkycXYJXdV3v3Z8mSJXHmmWfGAQccEAMGDIhjjz02fvGLXxRwxd1He/bmueeei0mTJsXQoUOjf//+cfTRR8ftt98eu3btKvCqu4dt27bFt7/97Zg4cWIMHDgwiouLY/78+Xt9viYonPbsTYc3QUG+XXU3Lr300qykpCS7/vrrs7vuuis76aSTsl69emX//d///YHn7dq1KzvxxBOz/v37Z9/97nezO+64IzvqqKOyAQMGZK+//nonrb5ra+veHHvssdmIESOyr33ta9ncuXOzr3/969mAAQOyoUOHZuvXr++k1Xdtbd2b9/uf//mfrFevXlmfPn2yCy64oICr7X7asz//8R//kRUXF2cTJkzI7rjjjuzOO+/Mrrnmmuzf/u3fOmHlXV9b9+a5557LevfunX3iE5/IfvCDH2Rz5szJLrrooqyoqCj76le/2kmr79refPPNrKioKDv00EOzM844IysuLs7uvvvuvTpXExRWe/amo5ugUwL1mWeeyYqKirLbbrutaWz79u3ZyJEjs5NOOukDz7333nuzoqKi7IEHHmga27BhQ1ZRUZFddtllBVtzd9Gevfmv//qvFmO/+93vsqKiouyb3/xmh6+1u2nP3rzfiSeemF111VXZoYceKlA7UHv2580338z69OmTzZgxo9DL7JbaszfTpk3LSktLs3fffbfZ+GmnnZYdcMABBVlvd5PP55uC5dlnn82Kior2OoI0QWG1Z286ugk65S3+hQsXRs+ePWPatGlNY717947Pf/7z8Yc//CFWr169x3Pvv//+OOigg+Kiiy5qGhs0aFBUVVXFww8/HDt27Cjo2ru69uzNySef3GLslFNOiQMPPLDpd/TSdu3Zm/fMnz8/XnrppbjlllsKudRuqT3785Of/CR27doV3/nOdyLib2+r0XHaszdbt26N0tLSKC8vbzZ+0EEH+e2GHaRXr14xZMiQNp2rCQqrPXvT0U3QKYH6wgsvxKhRo5r9RqmIv31X6nvP78nzzz8flZWVLcbHjx8f9fX1sXLlyo5dbDfTnr3ZnW3btkVdXV0MGjSow9bYXbV3b+rq6uJrX/tafP3rX2/zXzjsWXv2Z+nSpTF69Oj41a9+FQcffHD0798/Bg4cGN/61rci88Uq7daevTn99NNjy5Yt8YUvfCFWrFgRb731Vvz0pz+Nhx56KG688caCrpsPpwn2L+1pgoJ9Uf/7rV27NoYOHdpifOjQoZFlWaxZs+YDzz3ttNN2e25ExJo1a+LjH/94xy22m2nP3uzO7NmzY8eOHXHppZd21BK7rfbuzXe+853o06dPfPWrXy3UEru19uzPa6+9Fj169Ih/+qd/iuuvvz7GjBkTDzzwQNx8883R2Njoinc7tWdvpk2bFi+99FLceeed8bOf/SwiInr27Bk/+tGP4gtf+ELB1sze0QT7l/Y0QacEai6Xi969e7cYLy0tbXq+LedmWfaB5/Lh2rM3f+93v/td3HTTTXHJJZfs9i8QWqc9e7Ny5cr44Q9/GPfee2/06tWrYGvsztqzP3V1dZFlWXz/+9+Pf/mXf4mIiIsuuijeeeed+Pd///e48cYbo2/fvoVZeDfQnr0pLi6OESNGxIQJE6Kqqip69+4dNTU1MX369DjooIN8E8Y+pgn2H+1tgk4J1LKysmhoaGgxvn379qbn23JuUVGRzwS1U3v25v1WrFgRn/70p2PMmDFx1113degau6v27M3VV18dJ598cvzjP/5jwdbX3bX377X6+voWVxWqq6vjsccei+eff363n+di77Rnb2bOnBm33357vPbaa9GnT5+IiJg6dWqcccYZ8c///M8xadKkKC72FeL7iibYP3REE3TKn7KhQ4fG2rVrW4y/NzZs2LCCnMuH64j/v2+//Xacc845UVFREb/61a9c+ekgbd2b3/72t/HYY4/FV77ylVi1alWsWrUq3nzzzdi5c2fkcrlYtWpVbN26taBr7w7a82fnvef+4R/+odn4kCFDIsuy2Lx5cweutPtpz9785Cc/iTPOOKMpTt8zefLkWLNmTbz55psdulZaRxOkr6OaoFMCdezYsbFy5cqoq6trNv70009HUVFRjB079gPPXb58eYvxp59+Ovr06ROjRo3q8PV2J+3Zm4iITZs2xTnnnBM7d+6Mxx57rMU/uLRdW/fm7bffjqKiorjooovisMMOi8MOOywOP/zwWLNmTSxdujQOP/zw+PnPf94ZL6FLa8+fnXHjxkVEtLibfPXq1VFUVBSDBw/u+AV3I+3Zm/Xr10djY2OL8ffuDt+5c2fHLpZW0QRp68gm6JRAnTp1auzcuTPmzJnTNJbP52PevHlx/PHHx/DhwyMiYt26dfHqq682+8th6tSpsX79+njggQeaxjZu3BgLFy6MyZMn+3xdO7Vnb+rr62PixImxdu3a+PWvfx2HH354p6+/K2vr3px55pnx4IMPxkMPPdTsMWjQoDjuuOPioYceigsuuGCfvKaupD1/di655JLIsizmzp3bNJZlWfz85z+PAw88sClgaZv27M2oUaPiN7/5TbOr2Lt27Yp77703+vfvHyNGjOi8F9LNaYJ0dUoTtPqbU9uoqqoqKykpya677rpszpw52YknnpiVlJRkv//975uO+dznPpcVFRVlq1atahprbGzMTjjhhGzAgAHZTTfd1PRbI8rLy7OVK1d21vK7tLbuzYUXXpgVFRVlV111VbZgwYJmj4ceemhfvJQup617szu+qL/jtWd/zjrrrKxHjx7ZF7/4xeyOO+7Izj777Ky4uDj72c9+1tkvo0tq697cc889WXFxcTZy5MjsX//1X7Pbb789O+GEE7Li4uLse9/73r54KV3Sj370o+zmm2/OvvzlL2dFRUXZlClTsptvvjm7+eabsy1btmRZpgn2lbbuTUc3QacFakNDQ3bddddlw4YNy8rKyrJPfvKT2W9+85tmx1xxxRVZjx49WvxF/u6772bTpk3LBg8enPXr1y8744wzsuXLl3fW0ru8tu7NoYcemhUXF+/2cdhhh3X2y+iS2vPn5u8ddthh2eTJkwu53G6nPfuzbdu2bMaMGdmwYcOy0tLS7Oijj85qamo6c/ldWnv25j//8z+zT33qU9mQIUOa9uauu+7qzOV3eR/078d7+6EJ9o227k1HN0FRlvlWaAAA0uG7MgAASIpABQAgKQIVAICkCFQAAJIiUAEASIpABQAgKQIVAICkCFQAAJIiUAEASIpABQAgKQIVAICkCFQAAJLyfwGKKojVCTUXWwAAAABJRU5ErkJggg==",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x7f8264a22750>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mw = mwem(RangeQueries(domain_size), Histogram(ys/sum(ys), num_samples), MWParameters(epsilon=0.1, iterations=8));\n",
    "bar(xs, mw.synthetic.weights*num_samples, align=\"center\", color=\"red\", alpha=0.3, width=1/domain_size);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Side-by-side comparison"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "PyPlot.Figure(PyObject <matplotlib.figure.Figure object at 0x7f82646016d0>)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "bar(xs, ys, 1/domain_size);\n",
    "bar(xs, mw.synthetic.weights*num_samples, align=\"center\", color=\"red\", alpha=0.3, width=1/domain_size);"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Julia 0.5.0",
   "language": "julia",
   "name": "julia-0.5"
  },
  "language_info": {
   "file_extension": ".jl",
   "mimetype": "application/julia",
   "name": "julia",
   "version": "0.5.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
